// pages/mine/mine.js
const _api = require('../../utils/api.js');
const apiurl = require('../../utils/apiurl/public.js');
Page({

    /**
     * 页面的初始数据
     */
    data: {
        showModal:false,
        userModal:false,
        userInfo:null,
        product:[],//充值项目
        getuser:null,//从接口获取的用户信息
        order:null,
        apisum:0,
        ios:false
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad(options) {
    
    },

    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady() {

    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow() {
        let userInfo=wx.getStorageSync('userInfo')
        let _this=this;
       let system= wx.getSystemInfoSync().system.toLowerCase().includes("ios");
     
 
        this.setData({
            userInfo:userInfo,
            ios:system
        })
        this.getCode()
        this.getUserinfo()
        this.getProduct()
      
    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide() {

    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload() {

    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh() {

    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom() {

    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage() {

    },
    getCode(){
        wx.getUserProfile({
            desc: '用于完善会员资料', // 声明获取用户个人信息后的用途，后续会展示在弹窗中，请谨慎填写
            success: (userres) => {
                console.log(userres.userInfo)
                wx.setStorageSync('wxuserInfo',JSON.stringify(userres.userInfo))
                let wxuserInfo=userres.userInfo

                let sex=wxuserInfo.gender==0?'男':'女'

                wx.login({
                    success:res=>{
                      var code=res.code
                      if(code){
                          wx.getUserInfo({
                            success:ures=>{
                              _api.post(apiurl.login,{js_code:code,encryptedData:ures.encryptedData,iv:ures.iv}).then(loginres=>{
                                  console.log(232323);
                                  console.log(loginres.data);
                                  wx.setStorageSync('token', loginres.data.data.token)
                                  _api.post("index/user/info_edit",{nickname:wxuserInfo.nickName,avatar:wxuserInfo.avatarUrl,sex:sex}).then(infores=>{
                                    
                                    })
                                  this.getUserinfo()
                                })
                                
                            }
                          })
                      }
                    }
                })
            }
          })
        
    //   wx.getUserProfile({
    //     desc: '用于完善会员资料', // 声明获取用户个人信息后的用途，后续会展示在弹窗中，请谨慎填写
    //     success: (ress) => {
    //         console.log(ress);
    //       var encryptedData=ress.encryptedData
    //       var iv=ress.iv
    //       wx.setStorageSync('userInfo', ress.userInfo)
    //       wx.login({
    //         success:res=>{
    //           var code=res.code
    //           _api.post(apiurl.login,{js_code:code,encryptedData:encryptedData,iv:iv}).then(loginres=>{
    //             console.log(232323);
    //             console.log(loginres.data);
    //             wx.setStorageSync('token', loginres.data.data.token)
    //             let userInfo=wx.getStorageSync('userInfo')
    //             this.setData({
    //                 userInfo:userInfo
    //             })
    //           })
    //         }
    //       })
    //     }
    //   })
      
    },
    openTopup(){//打开充值框
        this.setData({showModal:true})
        this.getCode()
    },
    userTopup(){//打开充值框
      this.setData({userModal:true})
    
  },
    viptopip(){//打开充值框
      this.getCode()
        let id={
          'currentTarget':{
            'dataset':{
              'id':60
            }
          }
        }
        this.checkPay(id)
  },
    hideModal(){//关闭充值框
        this.setData({showModal:false,userModal:false})
    },
    userxhModal(e){
      wx.showLoading({
        title: '切换账户中...',
      })
    wx.setStorageSync('channelid',e.currentTarget.dataset.channel_id)
    wx.setStorageSync('token','')
    wx.login({
      success:res=>{
        var code=res.code
        if(code){
            wx.getUserInfo({
              success:ures=>{
                _api.post(apiurl.login,{js_code:code,encryptedData:ures.encryptedData,iv:ures.iv}).then(loginres=>{
                  console.log('loginres',loginres)
                  if(loginres.data){
                    wx.setStorageSync('token', loginres.data.data.token)
                  }
                   this.getUserinfo()
                  }) 
              }
            })
        }
      }
  })
    this.hideModal()
    },
    gotoSign(){
        wx.navigateTo({
          url: '/pages/signin/signin',
        })
    },
    gotoPage(e){

        var value = wx.getStorageSync('token')
        if(value){
            wx.navigateTo({
              url: e.currentTarget.dataset.page,
            })
        }else{
            this.getCode()
        }
    },
    getProduct(){//获取充值项目
        _api.get(apiurl.rechargeitem).then(res=>{
            if(res.data.code==0){
                this.setData({
                    product:res.data.data
                })
            }
        })
    },
    getUserinfo(){//获取用户信息
        _api.get(apiurl.userinfo).then(res=>{
          wx.hideLoading()
            if(res.data.code==0){
                this.setData({
                    getuser:res.data.data
                })
                wx.setStorageSync('getuser', res.data.data)
                this.select_order()
            }
        })
    },
    select_order(){
      _api.get(apiurl.selectorder).then(res=>{
        if(res.data.code==0){
            this.setData({
                order:res.data.data
            })
            wx.setStorageSync('getuser', res.data.data)
        }
    })
  
  
    },
    wxorder(id){
      let _this=this
      console.log(id)
     //apiurl.wxorder
      _api.post(apiurl.wxorder,{orderid:id}).then(res=>{
        
        if(res.data.code==0){
          let data=res.data.data.order
          if(data.status){
            setTimeout(()=>{
              _this.wxorder(id)
            },2000)
            
          }
            wx.hideLoading()
            _this.setData({
              showPay:false
          })
          _this.hideModal()
          _this.getUserinfo()
          
          
        }
    })
    },
    checkPay(e){//选择充值的项
        let id=e.currentTarget.dataset.id
        let _this=this
        this.getCode()
        _api.post(apiurl.ordercreate,{id:id}).then(res=>{
            if(res.data.code==0){
              const SDKVersion = wx.getSystemInfoSync().SDKVersion
              if (_this.compareVersion(SDKVersion, '2.19.2') >= 0 || wx.canIUse('requestVirtualPayment')) {
                let da=res.data.data
                let orderid=JSON.parse(da.signData).outTradeNo
                wx.requestVirtualPayment({
                  signData:JSON.stringify(JSON.parse(da.signData)),
                  paySig: da.paySig,
                  signature: da.signature,
                  mode: da.mode,
                  success(res) {
                      _this.wxorder(orderid) 
                  },
                  fail({ errMsg, errCode }) {
                    console.error(errMsg, errCode)
                  },
                })
              } else {
                console.log('当前用户的客户端版本不支持 wx.requestVirtualPayment')
              }
            }else if(res.data.code==103){
              this.getCode()

            }
        })
    },
    compareVersion(_v1, _v2) {
      if (typeof _v1 !== 'string' || typeof _v2 !== 'string') return 0
    
      const v1 = _v1.split('.')
      const v2 = _v2.split('.')
      const len = Math.max(v1.length, v2.length)
    
      while (v1.length < len) {
        v1.push('0')
      }
      while (v2.length < len) {
        v2.push('0')
      }
    
      for (let i = 0; i < len; i++) {
        const num1 = parseInt(v1[i], 10)
        const num2 = parseInt(v2[i], 10)
    
        if (num1 > num2) {
          return 1
        } else if (num1 < num2) {
          return -1
        }
      }
    
      return 0
    }
})